home *** CD-ROM | disk | FTP | other *** search
/ Acorn Risc Technologies StrongARM CD-ROM / Acorn Risc Technologies StrongARM CD-ROM.iso / software / utils / pro_copy / !CopyLog / copylog (.txt) < prev   
Encoding:
RISC OS BBC BASIC V Source  |  1996-05-03  |  3.8 KB  |  145 lines

  1.  > ProCopy Logfile tools
  2. !version$ = "1.10, April 1996"
  3.   Temporary program only - full Wimp app with options eventually (!)
  4.   When run this will concatentate and sort any
  5.   ProCopy logfiles in it's Logs sub-directory.
  6.  "Hourglass_Smash":
  7. '"Error "+
  8. )+" : "+
  9. memsz%=
  10. -&8000:buffer%=
  11.  namebuff% &2000, temp% 16
  12. assemble
  13. "OS_GBPB",12,"<ProCopyLog$Dir>",namebuff%,200,0,&2000,0 
  14.  ,,,num%
  15.  num%=0 
  16. '"No Logfiles found!":
  17. '"Procopy Logfile Tools - "+version$
  18. '"Please select -"
  19. "   1.  Sort by disc name"
  20. "   2.  Sort by number of copies"'
  21. :func%=
  22.  func%>48 
  23.  func%<51
  24.  func% 
  25. "Sorting by disc name"'
  26. "Sorting by number of copies"'
  27.  "Hourglass_On"
  28. n_ptr%=namebuff%
  29.  - Load the file and expand lines to 20 chars
  30.  file%=1
  31.  T%=n_ptr%!20
  32.  n_ptr%+=24:N%=n_ptr%
  33.  ?n_ptr%>13:n_ptr%+=1:
  34. :?n_ptr%=13
  35. #& filename$="<ProCopyLog$Dir>."+$N%
  36. "OS_File",17,filename$ 
  37.  F%,,,,len%
  38. %; mem_end%=
  39. wkspc(len%*2+&2000)-256:slot%=mem_end%-&8000
  40.  mem_end%<0 
  41.  0,"Not enough RAM to process file "+$N%:
  42. "Processing file "+$N%;
  43.  I%=0
  44. len%*2+&2000 
  45.   buffer%!I%=&20202020
  46.  "OS_File",16,filename$,buffer%,0
  47. ,4 out_start%=(buffer%+len%+7)
  48.  3:op%=out_start%
  49.  ip%=buffer%:end%=ip%+len%
  50.  ip%<end%
  51.   sl%=op%
  52.  ?ip%>31:?op%=?ip%:ip%+=1:op%+=1:
  53. 1!  op%=sl%+20:sl%?19=10:ip%+=1
  54.  op%>mem_end% mem_end%=
  55. wkspc(slot%+&2000)-256:slot%=mem_end%+&8000:
  56.  mem_end%<0 
  57.  0,"Not enough RAM to process file "+$N%
  58.  - Sort the list
  59. 6" elements%=(op%-out_start%)
  60.  J%=out_start%
  61. "OS_HeapSort",elements%,buffer%
  62. (3<<30),4,0,out_start%,20
  63.  - concatentate the list
  64. ;" ip%=out_start%:op%=out_start%
  65. <! end%=elements%*20+out_start%
  66.  count%=
  67. get_count(op%)
  68.  ip%<end%
  69.   ip%+=20
  70.  (!op%=!ip%)
  71. (op%!4=ip%!4)
  72. (op%!8=ip%!8) 
  73.    count%+=
  74. get_count(ip%)
  75. D)   $(op%+13)=
  76. "        "+
  77. (count%),6)
  78.    op%?19=10
  79.    op%+=20
  80. G$   
  81.  J%=0
  82.  4:op%!J%=ip%!J%:
  83.    count%=
  84. get_count(op%)
  85.  func% 
  86.  no need to do any more
  87. sort_numbers
  88.  "OS_File",10,filename$,&FFF,0,out_start%,op%
  89.  n_ptr%=(n_ptr%+4)
  90. " - Done"
  91. "Hourglass_Off"
  92.  '"Finished"
  93. sort_numbers
  94. Z!elements%=(op%-out_start%)
  95. "OS_HeapSort",elements%,buffer%
  96. (3<<30),code%,0,out_start%,20
  97. get_count(p%)
  98. p%+=18:
  99.  ?p%=32:=1
  100.  ?p%<>32:p%-=1:
  101. "OS_ReadUnsigned",10,p% 
  102.  ,,F%
  103. wkspc(sz%)
  104. "Wimp_SlotSize",memsz%+sz%,-1 
  105.  e%<(memsz%+sz%):=
  106. :=e%+&8000
  107. assemble
  108.  code% &400
  109.  PASS=0
  110. P%=code%
  111. [OPT PASS
  112. o5.numbers ;enter with r0, r1 = pointers to objects
  113. p0        stmfd r13!,{r4,r5}      ;store r4,r5
  114. q9        add r0,r0,#19           ;point to end of line
  115. r2        ldrb r4,[r0,#-1]!       ;get lsd in r4
  116.         ldrb r3,[r0,#-1]!
  117.         mov r3,r3,lsl #6
  118.         orr r4,r4,r3
  119.         ldrb r3,[r0,#-1]!
  120.         mov r3,r3,lsl #12
  121.         orr r4,r4,r3
  122.         ldrb r3,[r0,#-1]!
  123.         mov r3,r3,lsl #18
  124.         orr r4,r4,r3
  125.         ldrb r3,[r0,#-1]!
  126.         mov r3,r3,lsl #24
  127.         orr r4,r4,r3
  128. 9        add r1,r1,#19           ;point to end of line
  129. 2        ldrb r5,[r1,#-1]!       ;get lsd in r5
  130.         ldrb r3,[r1,#-1]!
  131.         mov r3,r3,lsl #6
  132.         orr r5,r5,r3
  133.         ldrb r3,[r1,#-1]!
  134.         mov r3,r3,lsl #12
  135.         orr r5,r5,r3
  136.         ldrb r3,[r1,#-1]!
  137.         mov r3,r3,lsl #18
  138.         orr r5,r5,r3
  139.         ldrb r3,[r1,#-1]!
  140.         mov r3,r3,lsl #24
  141.         orr r5,r5,r3
  142.         cmp r5,r4
  143.         ldmfd r13!,{r4,r5}
  144.         mov pc,r14
  145.